//bulk_purchase_balance
//拼团结算
exports.bulk_purchase_balance = function (req, res) {

    //获取restful参数
    var bodyParams = req.routeInfo.bodyParams;

    //最终结果
    var resultData = {};

    //拼团失败订单信息
    var failOrderInfo = [];

    //任务流创建
    async.waterfall([
            //1.拼团报名列表
            function (cb) {
                R.SEND_HTTP(
                    req,
                    {
                        url: CORE_APIConfig.coreAPI.searchBulkPurchaseOrder + "/bpau_oaid/" + bodyParams.activity_id + "/bpau_is_complete/0",
                        method: 'POST',
                        data: {
                            fields: ["bpau_uid", "o_we_chat_no", "o_balance_pay", "o_wechat_pay", "o_phone", "o_no", "openid", "o_course_name"].join(",")
                        }
                    },
                    function (err, data) {
                        //判断是否有错误信息
                        if (err) {
                            return cb(err, data);
                        }

                        failOrderInfo = data.data;

                        // resultData.failOrderInfo = failOrderInfo;
                        //console.log(failOrderInfo);
                        cb();
                    }
                );
            },
            function (cb) {
                //创建添加任务
                var tasks = [];
                if (failOrderInfo.length <= 0) {
                    return RES.response(res, false, "亲，还没有人参加活动熬······");
                }
                //循环节点列表
                failOrderInfo.forEach(function (item, i) {

                    //创建每一个插入任务
                    tasks.push(function (cb) {

                        //给未完成拼团团员生成退款信息
                        /*if (item.o_balance_pay * 1 > 0) {
                            R.SEND_HTTP(
                                req,
                                {
                                    url: CORE_APIConfig.coreAPI.orderBalanceRefund,
                                    method: 'POST',
                                    data: {
                                        _uid: item.bpau_uid,
                                        _blance_pay_money: item.o_balance_pay
                                    }

                                },
                                function (err, data) {
                                    //判断是否有错误信息
                                    if (err) {
                                        return RES.response(res, false, data);
                                    }

                                    //console.log(data);

                                    cb();
                                }
                            );
                        } else */
                        if (item.o_wechat_pay * 1 > 0) {
                            //调用微信退款
                            R.SEND_HTTP(
                                req,
                                {
                                    url: "http://localhost:3400/weixin/reimburse",
                                    method: 'POST',
                                    data: {
                                        action: "tuikuan",
                                        transaction_id: item.o_we_chat_no,
                                        total_fee: item.o_wechat_pay * 100,
                                        refund_fee: item.o_wechat_pay * 100
                                    }

                                },
                                function (err, data) {
                                    //判断是否有错误信息
                                    if (err) {
                                        return RES.response(res, false, data);
                                    }

                                    //console.log(data);

                                    cb();
                                }
                            );
                        } else {
                            cb();
                        }

                    });
                });
                async.waterfall(tasks, cb);
            },
            //更新已退款订单状态
            function (cb) {
                //创建添加任务
                var tasks = [];
                if (failOrderInfo.length <= 0) {
                    return RES.response(res, false, "亲，还没有人参加活动熬······");
                }
                //循环节点列表
                failOrderInfo.forEach(function (item, i) {

                    //创建每一个插入任务
                    tasks.push(function (cb) {

                        //更新订单状态
                        R.SEND_HTTP(
                            req,
                            {
                                url: CORE_APIConfig.coreAPI.update_order,
                                method: 'POST',
                                data: {
                                    o_no: item.o_no,
                                    o_pay_status: 6,
                                    o_is_refund: 1
                                }

                            },
                            function (err, data) {
                                //判断是否有错误信息
                                if (err) {
                                    return RES.response(res, false, data);
                                }

                                //console.log(data);

                                cb();
                            }
                        );

                    });
                });
                async.waterfall(tasks, cb);
            },
            //退款消息
            function (cb) {
                //创建添加任务
                var tasks = [];
                if (failOrderInfo.length <= 0) {
                    return RES.response(res, false, "亲，还没有人参加活动熬······");
                }
                //循环节点列表
                failOrderInfo.forEach(function (item, i) {

                    //创建每一个插入任务
                    tasks.push(function (callback) {

                        //余额退款消息
                        /*if (item.o_balance_pay * 1 > 0) {
                            R.SEND_HTTP(
                                req,
                                {
                                    url: CORE_APIConfig.coreAPI.sendCodeSms,
                                    method: 'POST',
                                    data: {
                                        phone: item.o_phone,
                                        type: 2,
                                        money: item.o_balance_pay
                                    }

                                },
                                function (err, data) {
                                    //判断是否有错误信息
                                    if (err) {
                                        return RES.response(res, false, data);
                                    }
                                    //console.log(data);

                                    cb();
                                }
                            );
                        } else */
                        if (item.o_wechat_pay * 1 > 0) {
                            //微信退款消息
                            R.SEND_HTTP(
                                req,
                                {
                                    url: CORE_APIConfig.coreAPI.sendCodeSms,
                                    method: 'POST',
                                    data: {
                                        phone: item.o_phone,
                                        type: 2,
                                        money: item.o_wechat_pay
                                    }

                                },
                                function (err, data) {
                                    //判断是否有错误信息
                                    R.SEND_HTTP(
                                        req,
                                        {
                                            url: "http://127.0.0.1:3400/weixin/templateMessagesSent",
                                            method: 'POST',
                                            data: {
                                                type: "pinTuanShiBai",
                                                openid: item.openid,
                                                bookingName: item.o_course_name,
                                                bookingCause: "拼团未完成",
                                                clickurl: "http://demo2.hxzbi.com/#/refund_list"
                                            }

                                        },
                                        function (err, data) {
                                            //判断是否有错误信息
                                            if (err) {
                                                return RES.response(res, false, data);
                                            }
                                            //console.log(data);

                                            callback();
                                        }
                                    );
                                }
                            );
                        } else {
                            callback();
                        }

                    });
                });
                async.waterfall(tasks, cb);
            },
        ], function (err, result) {

            //返回最终拼接结果
            RES.response(res, true, resultData);

        }
    );

};